win-bash - A stand-alone bash for Windows
win-bash is a Windows port of the famous GNU bash (see GNU Bash homepage).
Unlike other bash ports for Windows (e.g. the cygwin bash ), the win-bash needs no special environment or DLLs. There is just one binary and that's it.
win-bash is based on nt_bash which was an early bash port for Windows NT started by Mountain Math Software some years ago. As far as I know, the nt_bash port project stopped in alpha status and has never been finished.
The goal of the win-bash project is to finish the port to Windows and provide a fully-functional bash.exe binary for Windows NT and derived systems. win-bash can be used as an input shell, as well as an interpreter to run UN*X shell scripts.
Please report bugs to
the sourceforge bug tracking system.
-
- Sourceforge Project Page -> http://sourceforge.net/projects/win-bash/
- Download -> https://sourceforge.net/projects/win-bash/files/shell-complete/latest/
- EGCS Development Toolchain for GNU-Mingw32 -> The MinGW Compiler and Tools
- GNU utilities for Win32 -> The unxutils project
- ViewCVS -> http://win-bash.cvs.sourceforge.net/viewvc/win-bash/win-bash/
-
What differs win-bash from cygwin-bash?
First of all, you should keep in mind that win-bash is based on a old version of bash (1.14.2) while cygwin -bash is more or less up to date.
One important difference is the handling of drives: cygwin uses its installation directory as root dir and links all drives in the pseudo subdir /cygdrive . win-bash uses a diffent method: drives are included in paths, like on windows (e.g. c:/Winnt/System32 ). The root directory / is mapped to the root directory of the current drive.
Examples:- ls c:/winnt - shows the content of the directory c:/winnt
- cd c:/; ls /winnt - changes current drive to c: and shows the content of the directory c:/winnt
- cd d:/; ls /winnt - changes current drive to d: and shows the content of the directory d:/winnt
There are some other differences, most of them have been added to simplify the usage of existing un*x shell scripts:
- If a shell script starts with an interpreter specification like #!/path/interpreter , the interpreter is searched in the PATH environment instead of /path . E.g. a Perl script starting with #!/bin/perl will be started with perl.exe from the PATH environment variable.
- win-bash doesn't use any dlls or registry keys
How can I change the drive?
Use the cd command. The drive letter is optional and can be added at the head of the directory followed by a colon. If the drive letter is given, the current drive is changed. The root directory / always points the the current drive's root dir.
To change to the root directory on drive c: write:
cd c:/
Why did you port the very old bash 1.14.2 and not any newer version?
win-bash is based on nt_bash which was based on bash 1.14.2. The port was primary started to make un*x shell scripts run on windows. All tested scripts worked fine with this old version, so the primary goal of the project has been reached even with this old bash version.
-
The installation of win-bash is pretty simply: Just download shell.w32-ix86.zip, unpack it and copy the bash.exe file to a path which is listed in your PATH environment variable.
When using win-bash as the default shell for un*x shell scripts, you may which to copy bash.exe to sh.exe to make scripts starting with #!/bin/sh work.
Remember: This is only the shell binary - it has same builtin commands, but for must purposes you would need additional un*x tools like ls, sed etc. The unxutils project provides Windows ports of often used un*x tools.